﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using Portal.Utility;
using Portal.Web.Model;
using Portal.Web.Utility;
using Portal.Exam.Model;
using Portal.Exam.Bussiness;
using Portal.Core;

namespace Portal.Exam.Render
{
    public class SetExamRoomStudentSession
    {
        public static AjaxOut Draw(string SiteId)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(SetExamRoomStudentSession));
            AjaxOut OAjaxOut = new AjaxOut();
            try
            {
                WebSessionUtility.CheckSessionTimeOut();
                string ExamRoomStudentId = (string)WebEnvironments.Request(SiteId, "ExamRoomStudentId");
                ExamRoomStudentCls OExamRoomStudent = new ExamRoomStudentBll().CreateModel(SiteId, ExamRoomStudentId);
                if (OExamRoomStudent == null) throw new Exception("Không tìm thấy thí sinh này. Tham số không hợp lệ!");
                string BackUrl = "ExamRoomStudent.aspx?ExamRoomId=" + OExamRoomStudent.ExamRoomId;
                SiteParam OSiteParam = WebEnvironments.CreateSiteParam(SiteId);
                string HttpButtonRoot = WebConfig.GetButtonIconRoot(OSiteParam);

                string StartExamDateText = "";
                if (OExamRoomStudent.StartExam != new System.DateTime())
                {
                    StartExamDateText = OExamRoomStudent.StartExam.ToString("dd/MM/yyyy HH:mm:ss");
                }

                string RandomString = GetRandomString(6);
                string RetHtml =
                    "<script language=javascript>\r\n" +
                    " function ClientResetExamRoomStudentSession()\r\n" +
                    "     {\r\n" +
                    "         SiteId='" + SiteId + "';\r\n" +
                    "         if(confirm('Bạn đã chắc chắn khởi tạo cho làm lại bài chưa?')==false)return;\r\n"+
                    "         ExamRoomStudentId=document.getElementById('txtExamRoomStudentId').value;\r\n"+
                    "         OrgResetCode=document.getElementById(\"spanRandomString\").innerHTML;\r\n" +
                    "         ResetCode=document.getElementById(\"txtResetCode\").value;\r\n" +
                    "         AjaxOut = Portal.Exam.Render.SetExamRoomStudentSession.ServerSideResetExamRoomStudentSession(SiteId, ExamRoomStudentId, OrgResetCode, ResetCode).value;\r\n" +
                    "         if(AjaxOut.Error)\r\n" +
                    "         {\r\n" +
                    "             alert(AjaxOut.InfoMessage);\r\n" +
                    "             return;\r\n" +
                    "         }\r\n" +
                    "         alert(AjaxOut.InfoMessage);\r\n" +
                    "         window.open('" + BackUrl+"','_self');\r\n"+
                    "     }\r\n" +

                    "</script>\r\n" +
                " <div class=DatabaseFunction>\r\n" +
                "        <ul>\r\n" +
                "            <li onclick=\"javascript:ClientResetExamRoomStudentSession();\"><img class=image src=\"" + HttpButtonRoot + "/Save.png\"><div>Khởi tạo làm lại bài</div></li>\r\n" +
                "            <li onclick=\"javascript:window.open('"+BackUrl+"','_self');\"><img class=image src=\""+HttpButtonRoot+"/back.png\"><div>Quay lại</div></li>\r\n" +
                "        </ul>\r\n" +
                "  </div>\r\n" +
                "   <input id=\"txtExamRoomStudentId\" type=hidden value=\""+ExamRoomStudentId+"\">\r\n"+
                "   <h3>Sửa chữa thông tin thí sinh</h3>\r\n"+
                "   <div class=CssFormSaveUpdate>\r\n" +
                "     <table style=\"width:99%\">" +
                "          <tr>" +
                "              <td class=\"Col1\">Mã sinh viên:</td>" +
                "              <td>" + OExamRoomStudent.StudentCode + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Tên sinh viên:</td>" +
                "              <td>" + OExamRoomStudent.StudentName + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Ngày sinh:</td>" +
                "              <td>"+OExamRoomStudent.Dob.ToString("dd/MM/yyyy")+"</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Giới tính:</td>" +
                "              <td>" + (OExamRoomStudent .Sex==1?"Nam":"Nữ")+ "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Khoá:</td>" +
                "              <td>" + OExamRoomStudent.Course + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Lớp:</td>" +
                "              <td><input type=textbox class=textbox id=txtClass value=\"" + OExamRoomStudent.Class + "\"></td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Ngành:</td>" +
                "              <td>" + OExamRoomStudent.TrainingLevel + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Trạng thái:</td>" +
                "              <td>" + (OExamRoomStudent.FinishExam==1?"Đã thi xong":"Chưa thi") + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Thời gian bắt đầu:</td>" +
                "              <td>" + StartExamDateText + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Tổng thời gian làm:</td>" +
                "              <td>" + OExamRoomStudent.TotalExamTime.ToString("#,##0")+" phút</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Số câu hỏi:</td>" +
                "              <td>" + OExamRoomStudent.TotalQuestion.ToString("#,##0") + "</td>" +
                "          </tr>" +
                "          <tr>" +
                "              <td class=\"Col1\">Mã khởi tạo:</td>" +
                "              <td><span class=CssRandomString id=spanRandomString>" + RandomString + "</span><div><input id=txtResetCode type=textbox class=textbox></div></td>" +
                "          </tr>" +
                 "          <tr>" +
                "              <td class=\"Col1\"></td>" +
                "              <td>Nhập mã khởi tạo vào ô phía trên để chắc chắn khởi tạo lại cho phéo sinh viên làm lại bài. Chú ý: Nhập không cần phân biệt chữ hoa chữ thường</td>" +
                "          </tr>" +
                "      </table>" +
                "</div>\r\n";


                OAjaxOut.HtmlContent = RetHtml;
            }
            catch (Exception ex)
            {
                OAjaxOut.Error = true;
                OAjaxOut.InfoMessage=ex.Message.ToString();
                OAjaxOut.HtmlContent = ex.Message.ToString();
            }
            return OAjaxOut;
        }


        private static string GetRandomString(int size)
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;
            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }

            return builder.ToString();
        }

        [AjaxPro.AjaxMethod]
        public AjaxOut ServerSideResetExamRoomStudentSession(
            string SiteId,
            string ExamRoomStudentId,
            string OrgResetCode,
            string ResetCode)
        {
            AjaxOut OAjaxOut = new AjaxOut();
            try
            {
                WebSessionUtility.CheckSessionTimeOut();

                if (!OrgResetCode.ToLower().Trim().Equals(ResetCode.ToLower().Trim()))
                {
                    throw new Exception("Mã khởi tạo lại không hợp lệ");
                }
                new ExamRoomStudentBll().ResetExamRoomStudent(
                    SiteId,
                    ExamRoomStudentId);
                OAjaxOut.InfoMessage = "Khởi tạo lại cho phép thi sinh tiếp tục làm lại bài thành công";
            }
            catch (Exception ex)
            {
                OAjaxOut.Error = true;
                OAjaxOut.InfoMessage = ex.Message.ToString();
            }
            return OAjaxOut;
        }
    }
}